
namespace gen {

	template <class FunctorT>
	template <typename ContextT>
	domain<typename ContextT::iterator_t>
	if_expr<FunctorT>::evaluate(ContextT const& c) const
	{
		typedef typename ContextT::iterator_t iterator_t;
		domain<iterator_t> result(c.domain().first(), c.domain().last(), expr);
		return result;
	}

	template <class T>
	inline if_expr<T>
	if_g(const T & f)
    {
        return if_expr<T>(f);
    }

}
